package com.lyz.dataStructure.JianZhiOffer;/**
 * @Author:759057893@qq.com Lyz
 * @Date: ${Date} 16:57
 * @Description:
 **/

/**
 *@Author:759057893@qq.com Lyz
 *@Date: 2019/6/23 16:57
 *@Description:
 **/
/*
给定一个链表，判断链表中是否有环。  解法： 使用双指针 一个慢指针，每次移动一步，快指针每次移动2步。
 */
public class Test22 {
    public static boolean hasCycle(ListNode head){
        if(head==null||head.next==null){
            return  false;
        }
        ListNode p1 = head;
        ListNode p2 = head;
        while(p2!=null&&p2.next!=null){
            p1 =p1.next;
            p2 = p2.next.next;
            if(p1==p2){
               return  true;
            }
        }
        return  false;
    }


    public static void main(String[] args) {
        ListNode head = new ListNode(3);
        ListNode node1 = new ListNode(2);
        ListNode node2 = new ListNode(0);
        ListNode node3 = new ListNode(4);
        head.next=node1;
        node1.next=node2;
        node2.next=node3;
        node3.next=node2;
        System.out.println(hasCycle(node3));
    }
}
